Distributed computing systems are an increasingly important part of research, governmental, and enterprise computing systems. Among the advantages of such computing systems are their ability to handle a variety of different computing scenarios including large computational problems, high volume data processing situations, and high availability situations. Such distributed computing systems typically utilize one or more storage devices in support of the computing systems operations. These storage devices can be quite numerous and/or heterogeneous. In an effort to aggregate such storage devices and to make such storage devices more manageable and flexible, storage virtualization techniques are often used. Storage virtualization techniques establish relationships between physical storage devices, e.g. disk drives, tape drives, optical drives, etc., and virtual or logical storage devices such as volumes, virtual disks, and virtual logical units (sometimes referred to as virtual LUNs). In so doing, virtualization techniques provide system-wide features, e.g., naming, sizing, and management, better suited to the entire computing system than those features dictated by the physical characteristics of storage devices.
FIG. 1 illustrates a simplified example of a computing system 100. The members of the computing system 100 include host 130 and host 140. As members of computing system 100, hosts 130 and 140, typically some type of application, data, or file server, are often referred to “nodes.” Hosts 130 and 140 can be designed to operate completely independently of each other, or may interoperate to form some manner of cluster. Thus, hosts 130 and 140 are typically individual computer systems having some or all of the software and hardware components well known to those having skill in the art. FIG. 7 (described below) illustrates some of the features common to such computer systems. In support of various applications and operations, hosts 130 and 140 can exchange data over, for example, network 120, typically a local area network (LAN), e.g., an enterprise-wide intranet, or a wide area network (WAN) such as the Internet. Additionally, network 120 provides a communication path for various client computer systems 110 to communicate with hosts 130 and 140. In addition to network 120, hosts 130 and 140 can communicate with each other over a private network (not shown).
Other elements of computing system 100 include storage area network (SAN) 150 and storage devices such as tape library 160 (typically including one or more tape drives), a group of disk drives 170 (i.e., “just a bunch of disks” or “JBOD”), and intelligent storage array 180. As shown in FIG. 1, both hosts 130 and 140 are coupled to SAN 150. SAN 150 is conventionally a high-speed network that allows the establishment of direct connections between storage devices 160, 170, and 180 and hosts 130 and 140. SAN 150 can be implemented using a variety of different technologies including SCSI, fibre channel arbitrated loop (FCAL), fibre channel switched fabric, IP networks (e.g., iSCSI), Infiniband, etc. SAN 150 can also include one or more SAN specific devices such as SAN switches, SAN routers, SAN hubs, or some type of storage appliance. Thus, SAN 150 is shared between the hosts and allows for the sharing of storage devices between the hosts to provide greater availability and reliability of storage. Although hosts 130 and 140 are shown connected to storage devices 160, 170, and 180 through SAN 150, this need not be the case. Shared resources can be directly connected to some or all of the hosts in the computing system, and computing system 100 need not include a SAN. Alternatively, hosts 130 and 140 can be connected to multiple SANs.
Storage virtualization software operating on, for example, hosts 130 and 140 manages the storage devices available to and recognized by the native operating systems on the hosts and provides virtual storage devices for use by application software, file system software, and even the operating systems themselves. In addition to reliability, availability, manageability, etc, storage virtualization software typically allows the size of virtual storage devices to increase or decrease while the virtual storage devices are online, e.g., available for use by applications, file systems, and the like. Typically, the storage devices managed by the storage virtualization software, such as disk drives, tape devices, and solid state storage devices, are fixed in size and geometry. The task of making such devices available for use by the storage virtualization software, a process often referred to as initializing, can include: organizing the storage device into one or more regions for use by the storage virtualization software; organizing the storage device into one or more regions for general use, e.g., use by application software, data storage, etc.; and recording information about both the storage device and information used to establish and manage corresponding virtual storage devices.
In general, once a storage device has been initialized and is in use by storage virtualization software, i.e., the storage device is online, the storage device cannot be reinitialized or reconfigured without removing the storage device from availability to the storage virtualization process and threatening the integrity of data present on the storage device. For example, a typical reinitialization process might include: backing up the data on the storage device, removing the storage device from service, reinitializing the storage device, and restoring the data to the storage device. Although this can be an error prone and time consuming process, it may be a rare occurrence when the storage device in question is a typical disk drive because a disk drive's size and geometry remain fixed.
However, when the storage device in use by the storage virtualization software is not a physical disk drive, but is instead a virtual device such as a virtual logical unit (sometimes referred to as a LUN) on an intelligent disk array, SAN switch, or RAID controller, it is possible that the size of the storage device can change dynamically. Storage devices that can increase or decrease in size, whether by the addition/removal of storage or by the addition/removal of access to existing storage, can be referred to as expandable storage devices. Thus, expandable storage devices include storage devices that can both increase and decrease in available storage capacity.
In order to make use of newly available storage from an expandable storage device, or to accommodate a loss of storage in an expandable storage device, storage virtualization software will typically have to reinitialize some or all of the storage. As noted above, that process can be time consuming and a threat to data integrity when there is data that should be preserved on the expandable storage device.
Accordingly, it is desirable to have efficient and convenient mechanisms whereby storage virtualization software can accommodate changes in the amount of available storage, e.g., storage resizing, from expandable storage devices. Moreover, it is desirable that these efficient and convenient mechanisms generally allow the expandable storage devices to remain in operation and online while any storage virtualization software related configuration changes are performed.